The present invention generally relates to performance optimizations for relational databases and for the process of installing a software product onto a target computer system. More particularly, the present invention relates to performance optimizations for an installation database system for installing a software product onto a target computer system.
A software product may be provided to an end-user through a variety of media. For example, a software product may be supplied via a magnetic disk, an optical disk or a network connection. The end-user may install the software product onto a target computer system by copying various components of the software product into the memory of the target computer system. To facilitate the installation process, the media containing the software product may include an installation database system that describes all of the features and components of the software product, as well as any additional installation information that may be helpful to the target computer system.
A relational database model may serve as an effective installation database system due to its ability to provide fast and efficient query processing, minimal redundancy of data and adequate data integrity. A relational database comprises a collection of data elements stored in a plurality of two-dimensional database tables. A row of a relational database table defines a data record, whereas each column in a row defines a single data element. Data elements may comprise integer data, string data and even simple object data.
The relational database model maintains a rigid storage structure, wherein the data fields comprising the columns of a relational database table are of a predetermined fixed length. As such, each row in a relational database table is of a uniform size. This uniform storage model allows for simple memory management techniques and minimal CPU cycles when a data record (row) is fetched from disk. Once a data record is fetched into main memory, a database engine can readily read or write a particular data element by simply jumping to a known offset for a given column in the data record and then reading or writing the next n bytes, where n is the size of a column in number of characters.
On the downside, however, a rigid storage structure may cause the persistent size of a relational database to be very large. For example, data elements that are too large to fit within in a fixed-length data field must be truncated. Thus, in order to avoid loss of data, data fields are typically designed to be large enough to accommodate the longest data element that is likely to be stored in the column. If a given data element does not occupy all the space available in the data field, the unoccupied space is filled with null values. Therefore, the rigid storage structure of the relational database model may lead to a great deal of wasted memory space and cause the performance of the database system to be diminished.
Also, the rigid storage structure of the relational database model does not allow for the direct addition of temporary rows and columns to a database table. Temporary rows and columns may be useful in managing data, such as installation data, that is dependant on dynamic external conditions.
An installation database is generally created and populated by the software developer that supplies the software product. For each version of the software product, the software developer must create and populate a new installation database. Presently, if an end-user desires to add enhancements, patches, or upgrades to a software product, a complete version of a new installation database must be obtained to replace the original installation database.
Accordingly, there is a need for a relational installation database model that maintains a uniform data storage structure while eliminating wasted memory space. There is also a need for a relational database model that provides for the direct addition of temporary rows and columns to a database tables. There is a further need for a method of modifying an installation database or an installed prior version of a software product to reflect upgrades, patches, or enhancements without supplying a complete version of a new installation database.
The present invention fulfills the needs in the art by providing optimizations for the process involved in the installation of a software product onto a target computer system. The present invention provides a relational installation database system that has increased performance and reduced persistent size. Persistent size is reduced by substituting non-integer data elements in a database table, whether in the form of strings, objects, etc., with integer identifiers. The integer identifiers are obtained from an index which maintains a sequential record of each unique occurrences of a data element. In effect, the data elements in a database table are aliased with integer identifiers and the relationship between the integer identifiers and the data elements is determined by accessing the index.
The data fields underlying a database table are two-dimensional data arrays. Aliasing the non-integer data elements of a database table with integers causes the data arrays to be uniform. Thus, manipulation of the data arrays is simplified. The present invention provides for the direct addition of temporary rows and columns to a database table by expanding and contracting the underlying data arrays. When temporary rows or columns are created, data elements in both the temporary and permanent rows and columns may be accessed and modified. Data elements in the permanent rows and columns persist in the database, while data elements in the temporary rows and columns do not persist.
Functionality is provided to allow installation database tables to be merged together. This allows software developers to develop software in a modular fashion and to create an installation database for each module. Installation database may then be merged into a final installation database that is shipped to the end-user. Further, differences between two or more installation database tables may be recorded in a database transform. This database transform may be applied to a database table in such a way that the changes are incorporated therein. Thus, software developers are able to provide enhancements, upgrades, patches, etc. to an end-user in the form of database transform, without the need for shipping an entire modified installation database.